package top.lishuoboy.javaweb.a05xml;

import cn.hutool.core.io.resource.ResourceUtil;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.util.List;

/**
 * @author lishuoboy
 * @date 2021-12-27 22:09
 */
public class Dom4jTest {
    public static void main(String[] args) throws DocumentException {
//        需要分四步操作:
//        第一步，通过创建SAXReader对象。来读取xml文件，获取Document对象
//        第二步，通过Document对象。拿到XML的根元素对象
//        第三步，通过根元素对象。获取所有的book标签对象
//        第四步，遍历每个book标签对象。然后获取到book标签对象内的每一一个 元素，再通过getText()方法拿到起始标签和结束标签之间的文本内容


        // 第一步，通过创建SAXReader对象。来读取xml文件，获取Document对象
        SAXReader reader = new SAXReader();
        Document document = reader.read(ResourceUtil.getStream("05xml/books.xml"));
        // 第二步，通过Document对象。拿到XML的根元素对象
        Element root = document.getRootElement();
        // 打印测试  root.asXML();它将当前元素转换成为String对象
//        System.out.println(root.asXML());

        // 第三步，通过根元素对象。获取所有的book标签对象
        // Element. elements(标签名)它可以拿到当前元素下的指定的子元素的集合
        List<Element> books = root.elements("book");

        // 第四小，遍历每个book标签对象。然后获取到book标签对象内的每一一个元素
        for (Element book : books) {
            //测试
            // System.out.println(book.asXML());
            //遍历所有属性
            book.attributes().forEach(e -> System.out.println(e.getName() + ":" + e.getValue()));
            //获取指定属性
//            System.out.println(book.attribute("sn").getValue());
            //遍历所有
            book.elements().forEach(e -> System.out.println(e.getName() + ":" + e.getText()));
        }
    }
}
